Outdated computer infrastructure and changing technology and business processes are just a few examples of challenges that have only increased in complexity in today's highly computerized world. Rare are the circumstances where a clean transition from using one technology to using another can be achieved. More often, migration of technology involves significant planning, risks and costs.
Virtual Application Appliances automate the migration of applications from source computers to target computers. For example, an application is installed on a source computer and there is a desire to migrate that application to another, target computer. This can be done manually by re-installing the application on the target computer or transferring the binaries for the application, resulting in an “empty” application missing all the business data, configuration settings and customization found in the application on the source computer. All of this needs to be identified on the source computer then transferred and reconstituted on the target computer. This can be achieved manually or using scripts, application tools, ETL (Extract, Transform, Load), replication etc. But however it is achieved, this process will be unique to each application that is migrated and will require significant knowledge of the application to identify all of the data resources to be transferred from the source computer and then to properly re-associate them with the application on the target computer. This approach is disadvantageous because it must be assessed and engineered ad-hoc and specific to the application and customer infrastructure.
Another approach used to simplify this process is called physical to virtual or P2V technology. P2V capture images of the entire source computer and moves the whole image (OS, configuration, device drivers, management infrastructure, etc. in addition to the desired application) to virtual or cloud infrastructure. This is disadvantageous for operators of managed public and private cloud computing services, which in order to operate profitably prefer to use a consistent “operational stack” (OS, security configuration, management infrastructure) across all their customers. P2V copies over the customer's entire source computer “as is” with potentially incompatible infrastructure with the cloud operator's environment and processes. Because P2V also captures images at the computer (and not application) level, it suffers from similar disadvantages as the time-differencing approach, discussed below.
The time-differencing approach is a more common approach to migrating technology. This approach identifies differences between two images of a computer taken at different times. If the first image is taken before the subject application was installed and the second image was taken immediately before the subject application is migrated, then the difference between the two images includes all of the data resources of the subject application. This approach suffers from several disadvantages. One major disadvantage is the foresight necessary to prepare the first image before the subject application is installed. Oftentimes, this image is not available because migration of an application may not be thought of until well after that application was first installed.
Another major disadvantage is that the time-differencing approach is very over-inclusive. It looks at the entire computer system (not just the subject application) and all differences since that first image are captured (not just those relevant to the subject application). This can include a significant number of differences that are unrelated to the application. For example, some other applications may be installed between the two images or some other applications may change data between the two images. Under the time-differencing approach, all of these differences would be caught and presumed to be relevant to the subject application.
Another disadvantage is that the time-differencing approach may be under-inclusive. It cannot identify any resources that the subject application requires (but has not modified) between the two images. For example, a specific required service or package that was on the computer before installing the subject application. These required but unchanged resources would be removed when the two images are compared for differences causing the virtual application on the target computer to be under supplied and missing some of its resources. The time-differencing approach also cannot account for resources that the application has not yet required or used, but which may be required in the future. For example, a never before used file format conversion extension may be needed by the virtual application in the future. The difference approach does not catch this problem.
A variety of different time-differencing approaches have been used in application virtualization and other application deployment infrastructures for the task of identifying and packaging the components of an application. Generally, these approaches use a set of tools to take successive snapshots of an application in its environment on the source computer. A snapshot of the source computer's OS contents is taken prior to installing the application to be virtualized. Once the snapshot is taken the application is installed and then a second snapshot is taken to determine the differences. The differences are used to create the VAA. In more complex scenarios, a series of snapshots over the installation and configuration process produce multiple difference sets which can be applied independently; either way, the differences are captured over different states of the same source computer over time.
Some time-differencing approaches are applied in development or test environments by setting up a clean test computer, taking the first image, installing a copy of the application to be virtualized, taking a second image after installation, then calculating the difference to create a VAA based on the differences in a staged environment. This works if all states and execution paths of the application are reproducible in a test environment; however, the vast majority of business applications in production are operated with only a subset or sample data in development and test, even at best-practice levels of operational staging. A large percentage of applications are in production likely without any operational staging at all, reducing the breadth of applicability of the time-differencing approach.
Because the time-differencing approach presumes everything that has changed between the two images is related to the application, it is very difficult to use the difference approach on an active, online and in service computer where many other applications (unrelated to the one being virtualized) may also be changing the source computer at the same time, where multiple applications may have been installed since an image of the source computer was taken, where there may not be any images of the source computer prior to installing the application to be virtualized, or where the application to be virtualized may have been installed on the source computer a long time ago and multiple other applications or changes to the source computer have occurred since then which make the time-differencing approach less than ideal.
The differencing approach focuses exclusively on the source computer to identify the requirements of the virtual application. It requires changing the source computer (which often cannot be done, or is too risky when the source computer is online and actively in service) to create the VAA. This is a significant disadvantage that cannot be overstated.
Another disadvantage of the difference approach is that it cannot be readily used in real time on an application running on an active source computer. Preparation of the source computer, testing of the extracted differences to ensure nothing was missed and finally transitioning from the source computer to the target computer without losing business data or affecting the level of service offered are challenging problems that cannot be overcome without careful planning using the differencing approach.
The present disclosure seeks to overcome some of the disadvantages of the time-differencing approach.